<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>refs使用</title>
</head>
<body>
  <!-- 准备容器 -->
  <div id="test"></div>
  <!-- 按照顺序引入 -->
  <script type="text/javascript" src="../../js/react.development.js"></script>
  <script type="text/javascript" src="../../js/react-dom.development.js"></script>
  <script type="text/javascript" src="../../js/babel.min.js"></script>
  <script type="text/babel" >
    class Demo extends React.Component {
        state = {isHot:false}
        render(){
            /*
                1.回调函数形式的ref  a传递的是当前ref所在的节点  
                2.在标签中直接定义的函数  叫内联函数
                3.如果ref回调函数是以内联函数的方式定义的  在更新过程中会被执行两次 第一次输出null  第二次会传入参数DOM元素
                4.在每次渲染时会创建一个新的函数实例，清空旧的ref并且设置新的
            */
            const {isHot} = this.state
            return (
                <div>
                    {/*jsx中写注释  用{}包裹 */}
                    <h2>今天天气很{isHot?'炎热':'凉爽'}</h2>
                    { /*<input ref={a=>{this.input1=a; console.log(a,'a')}} type="text" placeholder="点击右侧按钮显示数据"/>&nbsp;&nbsp;*/}
                    <input ref={this.editInput} type="text" placeholder="点击右侧按钮显示数据"/>&nbsp;&nbsp;
                    <button onClick={this.showData1}>点击显示左侧数据</button>&nbsp;&nbsp;
                    <input ref={a=>this.input2=a} type="text" onBlur={this.showData2} placeholder="失去焦点显示数据" />    
                    <br />
                    <button onClick={this.changeWeather}>点我切换天气</button>
                    </div>
            )
        }
        changeWeather =()=>{  // 点击更新的时候  内联函数中的打印  第一次为null
            const {isHot} = this.state
            this.setState({isHot:!isHot})
        } 
        showData1=()=>{
            console.log(this.input1.value);
        }
        showData2=()=>{
            console.log(this.input2.value);
        }  
        editInput=(a)=>{
           this.input1=a
           console.log(a,'a')  // 更新不再变化
        }
    }
    ReactDOM.render(<Demo/>,document.getElementById('test'))
  </script>
</body>
</html>